package com.ruoyi.common.DataConversion.service;

import java.util.Map;

/**
 * @ClassName DownStationInfoService
 * @Description 下发分站信息
 * @Author 张永永
 * @Date 2020-12-26 16:33
 * @Version 1.0.0.0
 **/
public interface DownStationInfoService {

    /**
     * 分站电源管理
     *
     * @param stationId   分站编号
     * @param powerAction 电源动作 00->电池放电  01->电池充电
     * @return
     */
    Map<String, Object> powerInfoManager(String stationId, String powerAction);

    /**
     * 分站高级电源管理
     *
     * @param stationId       分站编号
     * @param powerDeviceCode 电源编号
     * @param powerAction     电源动作 00->电池放电  01->电池充电
     * @return
     */

    Map<String, Object> powerInfoManagerPlus(String stationId, String powerDeviceCode, String powerAction);

    /**
     * 发送时钟同步
     *
     * @param stationId 分站编号
     */
    Map<String, Object> sendStationClock(String stationId);

    /**
     * 新告警信息下发
     *
     * @param stationId       分站ID
     * @param cardDeviceId    标识卡ID
     * @param cardReaderId    读卡器ID
     * @param alarmType       告警类型 0:单卡告警   1:广播告警
     * @param alarmState      告警动作 0：取消告警 1：发送告警
     * @param isInSideMassage 0：联动告警 1：内部告警
     * @return
     */
    Map<String, Object> newAlarmInfoManager(String stationId,
                                            String cardDeviceId,
                                            String cardReaderId,
                                            String alarmType,
                                            String alarmState,
                                            String isInSideMassage);

    /**
     * 读卡器读参数包下发
     *
     * @param stationCode  分站编号
     * @param cardReaderId 读卡器ID
     * @param paramNum     参数号
     * @return
     */
    Map<String, Object> cardReaderParamRead(String stationCode,
                                            String cardReaderId,
                                            String paramNum);

    /**
     * 读卡器写参数包下发
     *
     * @param stationCode  分站编号
     * @param cardReaderId 读卡器ID
     * @param paramNum     参数号
     * @param paramValue   参数值
     * @return
     */
    Map<String, Object> cardReaderParamWrite(String stationCode,
                                             String cardReaderId,
                                             String paramNum,
                                             String paramValue);

    /**
     * 发送短信告警
     *
     * @param stationId      分站ID
     * @param cardDeviceId   卡设备ID
     * @param cardReaderId   读卡器ID
     * @param messageType    下发短信类型 0：单卡告警   1：广播告警
     * @param messageContent 短信内容
     * @return
     */
    Map<String, Object> sendMessage(String stationId,
                                    String cardDeviceId,
                                    String cardReaderId,
                                    String messageType,
                                    String messageContent);

    /**
     * 发送标识卡信息
     *
     * @param stationId
     */
    Map<String, Object> sendCardInfo(String stationId);

    /**
     * 发送读卡器信息
     *
     * @param stationId 分站编号
     */
    Map<String, Object> sendCardReaderInfo(String stationId);

    /**
     * 读取分站端口配置信息
     *
     * @param stationId 分站编号
     */
    Map<String, Object> readStationParam(String stationId, String startAddress, int dataLength, Object portParameter);

    /**
     * 写入分站端口配置信息
     *
     * @param stationId 分站编号
     */
    Map<String, Object> writeStationParam(String stationId, String startAddress, int dataContent);

    /**
     * 标识卡模式切换
     *
     * @param stationID      分站ID
     * @param startCardDeviceCode 标识卡起始ID
     * @param endCardDeviceCode 标识卡终止ID
     * @param mode           模式类型    1：仓储模式，2：定位模式
     * @return
     */
    Map<String, Object> cardModeChange(String stationID, String startCardDeviceCode,
                                       String endCardDeviceCode, String mode);

    /**
     * 标识卡模式切换取消
     *
     * @param stationID  分站ID
     * @return
     */
    Map<String, Object> cardModeChangeCancel(String stationID);


}
